package com.kexio.enterprise.governance.ratelimit.status;

import com.kexio.enterprise.governance.ratelimit.config.RateLimitConfig;

import java.time.LocalDateTime;

/**
 * 限流器状态
 * 
 * @author Kexio
 * @since 1.0.0
 */
public class RateLimiterStatus {
    private String key;
    private RateLimitConfig config;
    private boolean active;
    private long currentTokens;
    private LocalDateTime lastRefillTime;
    private LocalDateTime createTime;
    private boolean inWarmup;
    private long warmupRemaining;

    // Getters and Setters
    public String getKey() { return key; }
    public void setKey(String key) { this.key = key; }
    
    public RateLimitConfig getConfig() { return config; }
    public void setConfig(RateLimitConfig config) { this.config = config; }
    
    public boolean isActive() { return active; }
    public void setActive(boolean active) { this.active = active; }
    
    public long getCurrentTokens() { return currentTokens; }
    public void setCurrentTokens(long currentTokens) { this.currentTokens = currentTokens; }
    
    public LocalDateTime getLastRefillTime() { return lastRefillTime; }
    public void setLastRefillTime(LocalDateTime lastRefillTime) { this.lastRefillTime = lastRefillTime; }
    
    public LocalDateTime getCreateTime() { return createTime; }
    public void setCreateTime(LocalDateTime createTime) { this.createTime = createTime; }
    
    public boolean isInWarmup() { return inWarmup; }
    public void setInWarmup(boolean inWarmup) { this.inWarmup = inWarmup; }
    
    public long getWarmupRemaining() { return warmupRemaining; }
    public void setWarmupRemaining(long warmupRemaining) { this.warmupRemaining = warmupRemaining; }
}
